home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 March: Reference Library / Dev.CD Mar 96 RL / Dev.CD Mar 96 RL.toast / Technical Documentation / develop / develop Issue 25 / develop Issue 25 code / QD3D to QTVR / ArticleCode / Source / lights.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-21  |  3.2 KB  |  114 lines  |  [TEXT/MPCC]

  1. #include "QD3DtoQTVR.h"
  2. #include "extern.h"
  3. #include "lights.h"
  4.  
  5. // make an ambient light as well as a number of point lights: from above both
  6. // forward and back (+/- z), in front (separate r, g, b) and in back (also
  7. // separate r, g, b)
  8. TQ3Status MyNewLights( DocumentPtr theDocument ) 
  9. {
  10.     TQ3GroupObject            lightGroup;
  11.     TQ3LightObject            light;
  12.     TQ3PointLightData        pointData;
  13.     TQ3LightData            ambientData;
  14.     
  15.     // make light group
  16.     lightGroup = Q3LightGroup_New();
  17.  
  18.     // add ambient light
  19.     ambientData.isOn        = kQ3True;
  20.     ambientData.brightness    = 0.70;
  21.     ambientData.color.r     = 0.4;
  22.     ambientData.color.g     = 0.4;
  23.     ambientData.color.b     = 0.4;
  24.     
  25.     light = Q3AmbientLight_New(&ambientData);
  26.     Q3Group_AddObject(lightGroup, light);
  27.     Q3Object_Dispose(light);
  28.  
  29.     // light from above (both + and - z)
  30.     pointData.lightData.isOn        = kQ3True;
  31.     pointData.lightData.brightness    = 0.950;
  32.     pointData.lightData.color.r     = 1.0;
  33.     pointData.lightData.color.g     = 1.0;
  34.     pointData.lightData.color.b     = 1.0;
  35.     pointData.location.x            = 0.0;
  36.     pointData.location.y            = 1000.0;
  37.     pointData.location.z            = 1000.0;
  38.     pointData.castsShadows            = kQ3False;
  39.     pointData.attenuation            = kQ3AttenuationTypeNone;
  40.     
  41.     light = Q3PointLight_New(&pointData);
  42.     Q3Group_AddObject(lightGroup, light);
  43.     Q3Object_Dispose(light);
  44.  
  45.     pointData.location.z            = -1000.0;
  46.     
  47.     light = Q3PointLight_New(&pointData);
  48.     Q3Group_AddObject(lightGroup, light);
  49.     Q3Object_Dispose(light);
  50.  
  51.     // light from front (r, g, b separate)
  52.     pointData.lightData.brightness    = 0.80;
  53.     pointData.lightData.color.r     = 1.0;
  54.     pointData.lightData.color.g     = 0.0;
  55.     pointData.lightData.color.b     = 0.0;
  56.     pointData.location.x            = -1000.0;
  57.     pointData.location.y            = 0.0;
  58.     pointData.location.z            = 1000.0;
  59.     
  60.     light = Q3PointLight_New(&pointData);
  61.     Q3Group_AddObject(lightGroup, light);
  62.     Q3Object_Dispose(light);
  63.  
  64.     pointData.lightData.color.r     = 0.0;
  65.     pointData.lightData.color.g     = 1.0;
  66.     pointData.lightData.color.b     = 0.0;
  67.     pointData.location.x            = 1000.0;
  68.     
  69.     light = Q3PointLight_New(&pointData);
  70.     Q3Group_AddObject(lightGroup, light);
  71.     Q3Object_Dispose(light);
  72.  
  73.     pointData.lightData.color.r     = 0.0;
  74.     pointData.lightData.color.g     = 0.0;
  75.     pointData.lightData.color.b     = 1.0;
  76.     
  77.     light = Q3PointLight_New(&pointData);
  78.     Q3Group_AddObject(lightGroup, light);
  79.     Q3Object_Dispose(light);
  80.  
  81.     // light from rear (r, g, b separate as above)
  82.     pointData.lightData.color.r     = 1.0;
  83.     pointData.lightData.color.g     = 0.0;
  84.     pointData.lightData.color.b     = 0.0;
  85.     pointData.location.x            = -1000.0;
  86.     pointData.location.z            = -1000.0;
  87.     
  88.     light = Q3PointLight_New(&pointData);
  89.     Q3Group_AddObject(lightGroup, light);
  90.     Q3Object_Dispose(light);
  91.  
  92.     pointData.lightData.color.r     = 0.0;
  93.     pointData.lightData.color.g     = 1.0;
  94.     pointData.lightData.color.b     = 0.0;
  95.     pointData.location.x            = 1000.0;
  96.     
  97.     light = Q3PointLight_New(&pointData);
  98.     Q3Group_AddObject(lightGroup, light);
  99.     Q3Object_Dispose(light);
  100.  
  101.     pointData.lightData.color.r     = 0.0;
  102.     pointData.lightData.color.g     = 0.0;
  103.     pointData.lightData.color.b     = 1.0;
  104.     
  105.     light = Q3PointLight_New(&pointData);
  106.     Q3Group_AddObject(lightGroup, light);
  107.     Q3Object_Dispose(light);
  108.  
  109.     // add light group to view and then dispose
  110.     Q3View_SetLightGroup(theDocument->theView, lightGroup);
  111.     Q3Object_Dispose(lightGroup);
  112.     
  113.     return(kQ3Success);
  114. }